/******************************************************************************************** **
 * 在 C++ 中，每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。
 * 因此，在成员函数内部，它可以用来指向调用对象。
 *
 * 友元函数没有 this 指针，因为友元不是类的成员。只有成员函数才有 this 指针。
 *
 * 下面的实例有助于更好地理解 this 指针的概念：
 ******************************************************************************************** **/

#include <iostream>

using namespace std;

class Box
{
	public:
		// 构造函数,内部定义
		Box(double l=2.0, double b=2.0, double h=2.0)
		{
			cout <<"Constructor called." << endl;
			length = l;
			breadth = b;
			height = h;
		}
		double Volume()
		{
			return length * breadth * height;
		}
		int compare(Box box)
		{
			return this->Volume() > box.Volume(); //this指向自己,结果为真返回1
		}
	private:
		double length;     // Length of a box
		double breadth;    // Breadth of a box
		double height;     // Height of a box
};

int main(void)
{
	Box Box1(3.3, 1.2, 1.5);    // Declare box1
	Box Box2(8.5, 6.0, 2.0);    // Declare box2
	Box Box3; //default class

	if(Box1.compare(Box2))
	{
		cout << "Box2 is smaller than Box1" <<endl;
	}
	else
	{
		cout << "Box2 is equal to or larger than Box1" <<endl;
	}

	if(Box2.compare(Box3))
	{
		cout << "Box3 is smaller than Box2" <<endl;
	}
	else
	{
		cout << "Box3 is equal to or larger thann Box2" <<endl;
	}
	
	return 0;
}

